package dao;

import java.util.List;

import modelo.Contato;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import utils.SessionFactory;


public class ContatoDAO {
	public static final long UNSAVED_ID = 0;
	

	
	public ContatoDAO() throws Exception{
	}
	

	public static void persiste(Contato contato, Session session) throws Exception{
		if(contato.getId()==UNSAVED_ID)
			adiciona(contato, session);
		else
			atualiza(contato, session);
	}
	
	public static void adiciona(Contato contato, Session session) throws Exception{
		session.persist(contato);
	}

	public static void remove(Contato contato, Session session) throws Exception{
		session.delete(contato);
	}

	public static void atualiza(Contato contato, Session session) throws Exception{
		session.update(contato);
	}

	public static Contato obtem(long id, Session session) throws Exception{
		return (Contato) session.load(Contato.class, id);
	}
	
	public static List<Contato> listar(String filtro, Session session) throws Exception{
		Criteria crit = session.createCriteria(Contato.class);
//		crit.add(Restrictions.like("nome", "M", MatchMode.EXACT));
//		crit.addOrder(Order.desc("nome"));
		return crit.list();
		
	}

}
